home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / pascal / o_gem / wizard / wizard.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-09-22  |  31.7 KB  |  1,004 lines

  1. {$IFDEF DEBUG}
  2.     {$B+,D+,G-,I-,L+,N-,P-,Q+,R+,S+,T-,V-,X+,Z+}
  3. {$ELSE}
  4.     {$B+,D-,G-,I-,L-,N-,P-,Q-,R-,S-,T-,V-,X+,Z+}
  5. {$ENDIF}
  6.  
  7. program GEMWizard;
  8.  
  9. uses
  10.  
  11.     Gem,OTypes,OProcs,OWindows,ODialogs,OStdWnds;
  12.  
  13. const
  14.  
  15.     WVERSION   = '0.16';
  16.     WDATE      = '09.09.1994';
  17.     {$I wizard.i}
  18.  
  19. type
  20.  
  21.     PWizIcon = ^TWizIcon;
  22.     TWizIcon = object(TIcon)
  23.         function IsAppObject: boolean; virtual;
  24.         procedure IMMoved(X,Y: integer); virtual;
  25.     end;
  26.  
  27.     PAppIcon = ^TAppIcon;
  28.     TAppIcon = object(TWizIcon)
  29.         function IsAppObject: boolean; virtual;
  30.         procedure Work; virtual;
  31.     end;
  32.  
  33.     PWndIcon = ^TWndIcon;
  34.     TWndIcon = object(TWizIcon)
  35.         { ... }
  36.         procedure Work; virtual;
  37.     end;
  38.  
  39.     PArrangeWindow = ^TArrangeWindow;
  40.     TArrangeWindow = object(TWindow)
  41.         procedure GetWindowClass(var AWndClass: TWndClass); virtual;
  42.         procedure SetupWindow; virtual;
  43.         procedure Paint(var PaintInfo: TPaintStruct); virtual;
  44.     end;
  45.  
  46.     PWizardApplication = ^TWizardApplication;
  47.     TWizardApplication = object(TApplication)
  48.         appbuffer: record  { in TArrangeWindow bzw. TAppIcon einbauen... }
  49.             filename: string[9];
  50.             objname : string[31];
  51.             entry   : string[17];
  52.             cookie  : string[5];
  53.             rsc,
  54.             incl,
  55.             load,
  56.             profile,
  57.             xinp,
  58.             copt,
  59.             rem,
  60.             xtxt,
  61.             xkey,
  62.             xgem,
  63.             ximg,
  64.             iwnd,
  65.             rbox,
  66.             timr,
  67.             gdos,
  68.             auto,
  69.             av,
  70.             drag    : integer
  71.         end;
  72.         optbuffer: record
  73.             pascal,
  74.             binobj,
  75.             rcs     : string[63];
  76.             realtab : integer;
  77.             tabsize : string[1];
  78.             xinput  : integer
  79.         end;
  80.         AppIcon: PAppIcon; { in TArrangeWindow einbauen... }
  81.         procedure InitInstance; virtual;
  82.         procedure InitMainWindow; virtual;
  83.         procedure GetMenuEntries(var Entries: TMenuEntries); virtual;
  84.     end;
  85.  
  86.     PAppDialog = ^TAppDialog;
  87.     TAppDialog = object(TDialog)
  88.         function OK: boolean; virtual;
  89.     end;
  90.  
  91.     POptDialog = ^TOptDialog;
  92.     TOptDialog = object(TDialog)
  93.         function OK: boolean; virtual;
  94.     end;
  95.  
  96.     PAbout = ^TAbout;
  97.     TAbout = object(TKeyMenu)
  98.         procedure Work; virtual;
  99.     end;
  100.  
  101.     PNew = ^TNew;
  102.     TNew = object(TKeyMenu)
  103.         procedure Work; virtual;
  104.     end;
  105.  
  106.     POpen = ^TOpen;
  107.     TOpen = object(TKeyMenu)
  108.         procedure Work; virtual;
  109.     end;
  110.  
  111.     PSave = ^TSave;
  112.     TSave = object(TKeyMenu)
  113.         procedure Work; virtual;
  114.     end;
  115.  
  116.     PSaveAs = ^TSaveAs;
  117.     TSaveAs = object(TKeyMenu)
  118.         procedure Work; virtual;
  119.     end;
  120.  
  121.     PUndo = ^TUndo;
  122.     TUndo = object(TKeyMenu)
  123.         procedure Work; virtual;
  124.     end;
  125.  
  126.     PNewWObj = ^TNewWObj;
  127.     TNewWObj = object(TKeyMenu)
  128.         procedure Work; virtual;
  129.     end;
  130.  
  131.     PGenerate = ^TGenerate;
  132.     TGenerate = object(TKeyMenu)
  133.         procedure Work; virtual;
  134.     end;
  135.  
  136.     PAppConf = ^TAppConf;
  137.     TAppConf = object(TKeyMenu)
  138.         procedure Work; virtual;
  139.     end;
  140.  
  141.     POptions = ^TOptions;
  142.     TOptions = object(TKeyMenu)
  143.         procedure Work; virtual;
  144.     end;
  145.  
  146.     PSaveOpt = ^TSaveOpt;
  147.     TSaveOpt = object(TKeyMenu)
  148.         procedure Work; virtual;
  149.     end;
  150.  
  151.     PTabCheckBox = ^TTabCheckBox;
  152.     TTabCheckBox = object(TCheckBox)
  153.         pte: PEdit;
  154.         procedure Changed(AnIndx: integer; DblClick: boolean); virtual;
  155.     end;
  156.  
  157.     PRscCheckBox = ^TRscCheckBox;
  158.     TRscCheckBox = object(TCheckBox)
  159.         pr1,pr2: PRadioButton;
  160.         procedure Changed(AnIndx: integer; DblClick: boolean); virtual;
  161.     end;
  162.  
  163.     PColButton = ^TColButton;
  164.     TColButton = object(TButton)
  165.         color: integer;
  166.         obj  : PControl;
  167.         constructor Init(AParent: PDialog; AnIndx,AnID: integer; UserDef: boolean; Hlp: string; colr: integer; objct: PControl);
  168.         procedure Changed(AnIndx: integer; DblClick: boolean); virtual;
  169.     end;
  170.  
  171. var
  172.  
  173.     Wizard   : TWizardApplication;
  174.     WizardPtr: PWizardApplication;
  175.  
  176.  
  177.  
  178. procedure WizardResource; external; {$L wizard.o}
  179.  
  180.  
  181.  
  182. procedure TWizIcon.IMMoved(X,Y: integer);
  183.  
  184.     begin
  185.         SetPos(X,Y,false);
  186.         PWindow(Parent)^.ForceRedraw
  187.     end;
  188.  
  189.  
  190. function TWizIcon.IsAppObject: boolean;
  191.  
  192.     begin
  193.         IsAppObject:=false
  194.     end;
  195.  
  196.  
  197. function TAppIcon.IsAppObject: boolean;
  198.  
  199.     begin
  200.         IsAppObject:=true
  201.     end;
  202.  
  203.  
  204. procedure TAppIcon.Work;
  205.     var p : PCheckBox;
  206.         pc: PRscCheckBox;
  207.         pe: PEdit;
  208.         pv: PValidator;
  209.  
  210.     begin
  211.         if Click=1 then exit;
  212.         if ADialog=nil then
  213.             begin
  214.                 ADialog:=new(PAppDialog,Init(PWindow(Parent),GetText,WIZAPP));
  215.                 if ADialog<>nil then
  216.                     begin
  217.                         new(pe,Init(ADialog,WAPPPNAM,9,'Gibt den Namen des Programm-Quelltexts an, der auch für die "program ..."-Klausel verwendet wird'));
  218.                         new(pv,Init);
  219.                         pv^.Options:=voNotEmpty;
  220.                         pe^.SetValidator(pv);
  221.                         new(pe,Init(ADialog,WAPPONAM,32,'Bestimmt den Namen des Applikationsobjekts und der globalen statischen Application-Variablen'));
  222.                         new(pv,Init);
  223.                         pv^.Options:=voNotEmpty;
  224.                         pe^.SetValidator(pv);
  225.                         new(pe,Init(ADialog,WAPPENTR,18,'Mit diesem Text meldet sich das Programm beim AES an'));
  226.                         new(pv,Init);
  227.                         pv^.Options:=voNotEmpty;
  228.                         pe^.SetValidator(pv);
  229.                         new(pe,Init(ADialog,WAPPCOOK,5,'Wird intern als Kennung verwendet'));
  230.                         new(pv,Init);
  231.                         pv^.Options:=voNotEmpty;
  232.                         pe^.SetValidator(pv);
  233.                         new(pc,Init(ADialog,WAPPRSC,true,'Bestimmt, ob die Applikation eine Resource-Datei verwendet'));
  234.                         new(pc^.pr1,Init(ADialog,WAPPINC,true,'Die Resource-Datei wird in die Programmdatei eingebunden'));
  235.                         new(pc^.pr2,Init(ADialog,WAPPLOAD,true,'Die *.RSC-Datei wird zur Laufzeit nachgeladen'));
  236.                         new(PCheckBox,Init(ADialog,WAPPPROF,true,'Ist dieses Feld markiert, wird für das Programm die passende .INF-Datei angelegt'));
  237.                         new(PCheckBox,Init(ADialog,WAPPXINP,true,'Schaltet den X-Eingabemodus ein, d.h. Tastatureingaben werden an das Fenster unter dem Mauszeiger weitergeleitet (wie unter X/Unix)'));
  238.                         new(PCheckBox,Init(ADialog,WAPPOPT,true,'Bestimmt, ob dem Quelltext außer $X+ noch weitere Compiler-Optionen (auch zum Debuggen) hinzugefügt werden'));
  239.                         new(p,Init(ADialog,WAPPREM,true,'Gibt an, ob alle Methoden mit Kommentaren gespeichert werden sollen'));
  240.                         p^.Disable; { ... }
  241.                         new(PGroupBox,Init(ADialog,WAPPXACC,'XAcc-Protokoll','Legt fest, welche Daten per XAcc empfangen werden können'));
  242.                         new(PCheckBox,Init(ADialog,WAPPXTXT,true,'XAcc-Text-Daten werden ausgewertet'));
  243.                         new(PCheckBox,Init(ADialog,WAPPXKEY,true,'XAcc-Tastatur-Daten werden ausgewertet'));
  244.                         new(PCheckBox,Init(ADialog,WAPPXGEM,true,'XAcc-GEM-Metafiles werden ausgewertet'));
  245.                         new(PCheckBox,Init(ADialog,WAPPXIMG,true,'XAcc-VDI-(X)IMG-Grafiken werden ausgewertet'));
  246.                         new(PCheckBox,Init(ADialog,WAPPIWND,true,'In dem ikonifizierten Fenster der Applikation soll Text, Grafik etc. dargestellt werden'));
  247.                         new(PCheckBox,Init(ADialog,WAPPRBOX,true,'Auf dem Desktop kann eine Rubbox aufgezogen werden (wichtig z.B. für Icons)'));
  248.                         new(PCheckBox,Init(ADialog,WAPPTIMR,true,'Die Applikation erhält Timer-Events'));
  249.                         new(PCheckBox,Init(ADialog,WAPPGDOS,true,'Wenn die Applikation (Speedo)GDOS-Zeichensätze verwenden möchte, müssen diese geladen werden'));
  250.                         new(PCheckBox,Init(ADialog,WAPPAUTO,true,'Wenn das Programm im AUTO-Ordner gestartet wird, soll eine Aktion durchgeführt werden'));
  251.                         new(PCheckBox,Init(ADialog,WAPPAV,true,'Das AV-Protokoll soll ausgewertet werden'));
  252.                         new(PCheckBox,Init(ADialog,WAPPDRAG,true,'Unter MultiTOS soll Drag&Drop unterstützt werden'));
  253.                         new(PButton,Init(ADialog,WAPPOK,id_OK,true,'Übernimmt die Änderungen'));
  254.                         new(PButton,Init(ADialog,WAPPABBR,id_Cancel,true,'Schließt den Dialog, ohne die Änderungen zu übernehmen'));
  255.                         ADialog^.TransferBuffer:=@WizardPtr^.appbuffer;
  256.                         if WizardPtr^.appbuffer.rsc=bf_Checked then
  257.                             begin
  258.                                 pc^.pr1^.Enable;
  259.                                 pc^.pr2^.Enable
  260.                             end
  261.                         else
  262.                             begin
  263.                                 pc^.pr1^.Disable;
  264.                                 pc^.pr2^.Disable
  265.                             end
  266.                     end
  267.             end;
  268.         if ADialog<>nil then
  269.             begin
  270.                 ADialog^.SetTitle(GetText);
  271.                 ADialog^.MakeWindow
  272.             end
  273.     end;
  274.  
  275.  
  276. procedure TWndIcon.Work;
  277.     var pc: PControl;
  278.         p : PCheckBox;
  279.  
  280.     begin
  281.         if Click=1 then exit;
  282.         { ... }
  283.         Application^.Alert(PWindow(Parent),1,NOTE,'Dieses Icon funktioniert in der Vorversion vom GEM-Wizard noch nicht.','  &OK  ');
  284.         exit;
  285.         { ... }
  286.         if ADialog=nil then
  287.             begin
  288.                 new(ADialog,Init(PWindow(Parent),GetText,WIZWND));
  289.                 if ADialog<>nil then
  290.                     begin
  291.                         new(PEdit,Init(ADialog,WWNDONAM,32,'Bestimmt den Namen des Fensterobjekts'));
  292.                         new(PEdit,Init(ADialog,WWNDTITL,61,''));
  293.                         new(PEdit,Init(ADialog,WWNDCLAS,61,''));
  294.                         new(PGroupBox,Init(ADialog,WWNDCURS,'Mauscursor',''));
  295.                         new(PRadioButton,Init(ADialog,WWNDNONE,true,''));
  296.                         new(PRadioButton,Init(ADialog,WWNDARRW,true,''));
  297.                         new(PRadioButton,Init(ADialog,WWNDTEXT,true,''));
  298.                         new(PRadioButton,Init(ADialog,WWNDHOUR,true,''));
  299.                         new(PRadioButton,Init(ADialog,WWNDHAND,true,''));
  300.                         new(PRadioButton,Init(ADialog,WWNDTCRS,true,''));
  301.                         new(PRadioButton,Init(ADialog,WWNDFCRS,true,''));
  302.                         new(PRadioButton,Init(ADialog,WWNDOCRS,true,''));
  303.                         new(PRadioButton,Init(ADialog,WWNDPEN,true,''));
  304.                         new(PRadioButton,Init(ADialog,WWNDRUB,true,''));
  305.                         new(PRadioButton,Init(ADialog,WWNDSCIS,true,''));
  306.                         new(PRadioButton,Init(ADialog,WWNDPAST,true,''));
  307.                         new(PGroupBox,Init(ADialog,WWNDPOS,'Position beim Öffnen',''));
  308.                         new(PComboBox,Init(ADialog,WWNDZENT,WWNDPZEN,0,WIZPOP,WPOPPOS,true,false,'Bestimmt die Position eines neuen Fensters'));
  309.                         new(PCheckBox,Init(ADialog,WWNDONCE,true,'Gibt an, ob die Position nur beim ersten Öffnen berechnet werden soll'));
  310.                         new(PGroupBox,Init(ADialog,WWNDGADG,'Komponenten','Legt fest, welche Komponenten das Fenster besitzt. Ein Titel ist immer vorhanden, und das Fenster kann grundsätzlich bewegt werden.'));
  311.                         new(PCheckBox,Init(ADialog,WWNDINFO,true,''));
  312.                         new(PCheckBox,Init(ADialog,WWNDCLOS,true,''));
  313.                         new(PCheckBox,Init(ADialog,WWNDFULL,true,''));
  314.                         new(PCheckBox,Init(ADialog,WWNDSIZE,true,''));
  315.                         new(PCheckBox,Init(ADialog,WWNDHOR,true,''));
  316.                         new(PCheckBox,Init(ADialog,WWNDVERT,true,''));
  317.                         new(PGroupBox,Init(ADialog,WWNDCOLR,'Farbe',''));
  318.                         new(pc,Init(ADialog,WWNDCCOL,''));
  319.                         new(PColButton,Init(ADialog,WWNDCOL0,id_NoExit,false,'',0,pc));
  320.                         new(PColButton,Init(ADialog,WWNDCOL1,id_NoExit,false,'',1,pc));
  321.                         new(PColButton,Init(ADialog,WWNDCOL2,id_NoExit,false,'',2,pc));
  322.                         new(PColButton,Init(ADialog,WWNDCOL3,id_NoExit,false,'',3,pc));
  323.                         new(PColButton,Init(ADialog,WWNDCOL4,id_NoExit,false,'',4,pc));
  324.                         new(PColButton,Init(ADialog,WWNDCOL5,id_NoExit,false,'',5,pc));
  325.                         new(PColButton,Init(ADialog,WWNDCOL6,id_NoExit,false,'',6,pc));
  326.                         new(PColButton,Init(ADialog,WWNDCOL7,id_NoExit,false,'',7,pc));
  327.                         new(PColButton,Init(ADialog,WWNDCOL8,id_NoExit,false,'',8,pc));
  328.                         new(PColButton,Init(ADialog,WWNDCOL9,id_NoExit,false,'',9,pc));
  329.                         new(PColButton,Init(ADialog,WWNDCOLA,id_NoExit,false,'',10,pc));
  330.                         new(PColButton,Init(ADialog,WWNDCOLB,id_NoExit,false,'',11,pc));
  331.                         new(PColButton,Init(ADialog,WWNDCOLC,id_NoExit,false,'',12,pc));
  332.                         new(PColButton,Init(ADialog,WWNDCOLD,id_NoExit,false,'',13,pc));
  333.                         new(PColButton,Init(ADialog,WWNDCOLE,id_NoExit,false,'',14,pc));
  334.                         new(PColButton,Init(ADialog,WWNDCOLF,id_NoExit,false,'',15,pc));
  335.                         new(PCheckBox,Init(ADialog,WWNDIWND,true,''));
  336.                         new(PCheckBox,Init(ADialog,WWNDRBOX,true,''));
  337.                         new(PCheckBox,Init(ADialog,WWNDDRAG,true,''));
  338.                         new(PCheckBox,Init(ADialog,WWNDQUIT,true,''));
  339.                         new(PCheckBox,Init(ADialog,WWNDBACK,true,''));
  340.                         new(PCheckBox,Init(ADialog,WWNDREDR,true,''));
  341.                         new(PCheckBox,Init(ADialog,WWNDBYTE,true,''));
  342.                         new(p,Init(ADialog,WWNDOPEN,true,''));
  343.                         p^.Disable; { ... }
  344.                         new(PButton,Init(ADialog,WWNDOK,id_OK,true,'Übernimmt die Änderungen'));
  345.                         new(PButton,Init(ADialog,WWNDABBR,id_Cancel,true,'Schließt den Dialog, ohne die Änderungen zu übernehmen'));
  346.                         { ... }
  347.                     end
  348.             end;
  349.         if ADialog<>nil then
  350.             begin
  351.                 ADialog^.SetTitle(GetText);
  352.                 ADialog^.MakeWindow
  353.             end
  354.     end;
  355.  
  356.  
  357. procedure TWizardApplication.InitInstance;
  358.     var pkm: PKeyMenu;
  359.  
  360.     begin
  361.         WizardPtr:=PWizardApplication(Application);
  362.         InitResource(@WizardResource,nil);
  363.         OpenPrivateProfile('WIZARD.INF');
  364.         LoadMenu(WIZMENU);
  365.         new(PAbout,Init(@self,K_CTRL,Ctrl_I,WMNABOUT,WMNDESK));
  366.         pkm:=new(PNew,Init(@self,-1,-1,WMNNEW,WMNFILE));
  367.         pkm^.Disable; { ... }
  368.         pkm:=new(POpen,Init(@self,-1,-1,WMNOPEN,WMNFILE));
  369.         pkm^.Disable; { ... }
  370.         pkm:=new(PSave,Init(@self,-1,-1,WMNSAVE,WMNFILE));
  371.         pkm^.Disable; { ... }
  372.         pkm:=new(PSaveAs,Init(@self,-1,-1,WMNSAVAS,WMNFILE));
  373.         pkm^.Disable; { ... }
  374.         pkm:=new(PUndo,Init(@self,-1,-1,WMNUNDO,WMNEDIT));
  375.         pkm^.Disable; { ... }
  376.         pkm:=new(PNewWObj,Init(@self,-1,-1,WMNNWOBJ,WMNEDIT));
  377.         pkm^.Disable; { ... }
  378.         new(PGenerate,Init(@self,K_CTRL,Ctrl_G,WMNPCREA,WMNPROJC));
  379.         new(PAppConf,Init(@self,K_CTRL,Ctrl_E,WMNPCONF,WMNPROJC));
  380.         new(POptions,Init(@self,K_SHIFT+K_CTRL,Ctrl_E,WMNOCONF,WMNOPT));
  381.         new(PSaveOpt,Init(@self,K_SHIFT+K_CTRL,Ctrl_S,WMNOSAVE,WMNOPT));
  382.         with appbuffer do
  383.             begin
  384.                 filename:='MyApp';
  385.                 objname:='MyApplication';
  386.                 entry:='GEM-Wizard MyApp';
  387.                 cookie:='????';
  388.                 rsc:=bf_Unchecked;
  389.                 incl:=bf_Checked;
  390.                 load:=bf_Unchecked;
  391.                 profile:=bf_Unchecked;
  392.                 xinp:=bf_Unchecked;
  393.                 copt:=bf_Checked;
  394.                 rem:=bf_Unchecked;
  395.                 xtxt:=bf_Unchecked;
  396.                 xkey:=bf_Unchecked;
  397.                 xgem:=bf_Unchecked;
  398.                 ximg:=bf_Unchecked;
  399.                 iwnd:=bf_Unchecked;
  400.                 rbox:=bf_Unchecked;
  401.                 timr:=bf_Unchecked;
  402.                 gdos:=bf_Unchecked;
  403.                 auto:=bf_Unchecked;
  404.                 av:=bf_Unchecked;
  405.                 drag:=bf_Unchecked
  406.             end;
  407.         SliceMouse;
  408.         with optbuffer do
  409.             begin
  410.                 pascal:=GetPrivateProfileString('Options','PPascal','PPASCAL.PRG','WIZARD.INF');
  411.                 SliceMouseNext;
  412.                 binobj:=GetPrivateProfileString('Options','Binobj','BINOBJ.TTP','WIZARD.INF');
  413.                 SliceMouseNext;
  414.                 rcs:=GetPrivateProfileString('Options','RCS','','WIZARD.INF');
  415.                 SliceMouseNext;
  416.                 realtab:=GetPrivateProfileInt('Options','RealTab',bf_Checked,'WIZARD.INF');
  417.                 SliceMouseNext;
  418.                 tabsize:=GetPrivateProfileString('Options','TabSize','2','WIZARD.INF');
  419.                 SliceMouseNext;
  420.                 xinput:=GetPrivateProfileInt('Options','XInputMode',bf_Unchecked,'WIZARD.INF');
  421.                 if xinput=bf_Checked then Attr.Style:=Attr.Style or as_XInputMode
  422.             end;
  423.         ArrowMouse;
  424.         inherited InitInstance
  425.     end;
  426.  
  427.  
  428. procedure TWizardApplication.InitMainWindow;
  429.  
  430.     begin
  431.         new(PArrangeWindow,Init(nil,'GEM-Wizard  [unbenannt]'));
  432.         if (MainWindow=nil) or (ChkError<em_OK) then Status:=em_InvalidMainWindow
  433.     end;
  434.  
  435.  
  436. procedure TWizardApplication.GetMenuEntries(var Entries: TMenuEntries);
  437.  
  438.     begin
  439.         with Entries do
  440.             begin
  441.                 Quit.Entry:=WMNQUIT;
  442.                 Quit.Title:=WMNFILE;
  443.                 Close.Entry:=WMNCLOSE;
  444.                 Close.Title:=WMNFILE;
  445.                 Print.Entry:=WMNPRINT;
  446.                 Print.Title:=WMNFILE;
  447.                 Cut.Entry:=WMNCUT;
  448.                 Cut.Title:=WMNEDIT;
  449.                 Copy.Entry:=WMNCOPY;
  450.                 Copy.Title:=WMNEDIT;
  451.                 Paste.Entry:=WMNPASTE;
  452.                 Paste.Title:=WMNEDIT;
  453.                 SelectAll.Entry:=WMNSELAL;
  454.                 SelectAll.Title:=WMNEDIT
  455.             end
  456.     end;
  457.  
  458.  
  459. procedure TArrangeWindow.GetWindowClass(var AWndClass: TWndClass);
  460.  
  461.     begin
  462.         inherited GetWindowClass(AWndClass);
  463.         with AWndClass do Style:=(Style and not(cs_QuitOnClose)) or cs_WorkBackground or cs_Rubbox
  464.     end;
  465.  
  466.  
  467. procedure TArrangeWindow.SetupWindow;
  468.  
  469.     begin
  470.         inherited SetupWindow;
  471.         new(WizardPtr^.AppIcon,Init(@self,WIZFREE,WICNAPP,(Work.W shr 1)-16,20,true,true,'MyApplication','Das Applikationsobjekt'));
  472.         new(PWndIcon,Init(@self,WIZFREE,WICNWND,(Work.W shr 1)-90,90,true,true,'MyWindow','Das Hauptfenster-Objekt'))
  473.         { ... }
  474.     end;
  475.  
  476.  
  477. procedure TArrangeWindow.Paint(var PaintInfo: TPaintStruct);
  478.     var pi1,pi2: PIcon;
  479.  
  480.     begin
  481.         pi1:=FirstIcon(false);
  482.         pi2:=NextIcon;
  483.         if (pi1=nil) or (pi2=nil) then exit;
  484.         vsl_ends(vdiHandle,LE_SQUARED,LE_ARROWED);
  485.         pxya[0]:=pi2^.XPos+Work.X+34;
  486.         pxya[1]:=pi2^.YPos+Work.Y+16;
  487.         pxya[2]:=pi1^.XPos+Work.X+10;
  488.         pxya[3]:=pi1^.YPos+Work.Y+40;
  489.         v_pline(vdiHandle,2,pxya)
  490.         { ... }
  491.     end;
  492.  
  493.  
  494. function TAppDialog.OK: boolean;
  495.     var valid: boolean;
  496.  
  497.     begin
  498.         valid:=inherited OK;
  499.         if valid then WizardPtr^.AppIcon^.SetText(WizardPtr^.appbuffer.objname); { ... }
  500.         OK:=valid
  501.     end;
  502.  
  503.  
  504. function TOptDialog.OK: boolean;
  505.     var valid: boolean;
  506.  
  507.     begin
  508.         valid:=inherited OK;
  509.         if valid then
  510.             begin
  511.                 if WizardPtr^.optbuffer.xinput=bf_Checked then
  512.                     Application^.Attr.Style:=Application^.Attr.Style or as_XInputMode
  513.                 else
  514.                     Application^.Attr.Style:=Application^.Attr.Style and not(as_XInputMode)
  515.             end;
  516.         OK:=valid
  517.     end;
  518.  
  519.  
  520. procedure TAbout.Work;
  521.     var p: PStatic;
  522.  
  523.     begin
  524.         if ADialog=nil then
  525.             begin
  526.                 new(ADialog,Init(nil,'Über Wizard...',WIZINFO));
  527.                 if ADialog<>nil then
  528.                     begin
  529.                         new(PStatic,Init(Adialog,WINFTITL,21,true,'"Möge die OOP mit Euch sein!"'));
  530.                         new(p,Init(ADialog,WINFVER,28,false,''));
  531.                         if p<>nil then p^.SetText('Version '+WVERSION+' vom '+WDATE);
  532.                         new(PButton,Init(ADialog,WINFOK,id_OK,true,'Schließt das "Über..."-Fenster.'))
  533.                     end
  534.             end;
  535.         if ADialog<>nil then ADialog^.MakeWindow
  536.     end;
  537.  
  538.  
  539. procedure TNew.Work;
  540.  
  541.     begin
  542.         { ... }
  543.     end;
  544.  
  545.  
  546. procedure TOpen.Work;
  547.  
  548.     begin
  549.         { ... }
  550.     end;
  551.  
  552.  
  553. procedure TSave.Work;
  554.  
  555.     begin
  556.         { ... }
  557.     end;
  558.  
  559.  
  560. procedure TSaveAs.Work;
  561.  
  562.     begin
  563.         { ... }
  564.     end;
  565.  
  566.  
  567. procedure TUndo.Work;
  568.  
  569.     begin
  570.         { ... }
  571.     end;
  572.  
  573.  
  574. procedure TNewWObj.Work;
  575.  
  576.     begin
  577.         { ... }
  578.     end;
  579.  
  580.  
  581. procedure TGenerate.Work;
  582.     var f                 : text;
  583.         fname,dummy,appobj: string;
  584.         ptw               : PTextWindow;
  585.  
  586.     function tab(cnt: integer): string;
  587.         var q    : integer;
  588.             dummy: string;
  589.  
  590.         begin
  591.             if WizardPtr^.optbuffer.realtab=bf_Checked then
  592.                 begin
  593.                     dummy:='';
  594.                     if cnt>0 then
  595.                         for q:=1 to cnt do dummy:=dummy+chr(HT);
  596.                     tab:=dummy
  597.                 end
  598.             else
  599.                 tab:=StrPSpace(cnt*atol(WizardPtr^.optbuffer.tabsize))
  600.         end;
  601.  
  602.     begin
  603.         fname:=StrPUpper(WizardPtr^.appbuffer.filename)+'.PAS';
  604.         if Exist(fname) then
  605.             case Application^.Alert(nil,3,WAIT,'Die Datei '+fname+' existiert bereits!','&Überschreiben|&Backup|&Abbruch') of
  606.             1: BusyMouse;
  607.             2:
  608.                 begin
  609.                     BusyMouse;
  610.                     if Exist(GetPath(fname)+GetFilename(fname,false)+'.BAK') then
  611.                         begin
  612.                             assign(f,GetPath(fname)+GetFilename(fname,false)+'.BAK');
  613.                             erase(f)
  614.                         end;
  615.                     assign(f,fname);
  616.                     rename(f,GetPath(fname)+GetFilename(fname,false)+'.BAK')
  617.                 end
  618.             else
  619.                 exit
  620.             end;
  621.         assign(f,fname);
  622.         rewrite(f);
  623.         if WizardPtr^.appbuffer.copt=bf_Checked then
  624.             begin
  625.                 writeln(f,'{$IFDEF DEBUG}');
  626.                 writeln(f,tab(1),'{$B+,D+,G-,I-,L+,N-,P-,Q+,R+,S+,T-,V-,X+,Z+}');
  627.                 writeln(f,'{$ELSE}');
  628.                 writeln(f,tab(1),'{$B+,D-,G-,I-,L-,N-,P-,Q-,R-,S-,T-,V-,X+,Z+}');
  629.                 writeln(f,'{$ENDIF}');
  630.                 writeln(f)
  631.             end;
  632.         write(f,'program ',WizardPtr^.appbuffer.filename,';');
  633.         if WizardPtr^.appbuffer.copt=bf_Checked then writeln(f)
  634.         else
  635.             writeln(f,' {$X+}');
  636.         writeln(f);
  637.         writeln(f,'uses');
  638.         writeln(f);
  639.         dummy:='OTypes,OWindows;';
  640.         if WizardPtr^.appbuffer.timr=bf_Checked then dummy:='Gem,'+dummy;
  641.         writeln(f,tab(1),dummy);
  642.         if WizardPtr^.appbuffer.rsc=bf_Checked then
  643.             if WizardPtr^.appbuffer.incl=bf_Checked then
  644.                 begin
  645.                     writeln(f);
  646.                     writeln(f,'const');
  647.                     writeln(f);
  648.                     writeln(f,tab(1),'{$I ',WizardPtr^.appbuffer.filename,'.i}')
  649.                 end;
  650.         writeln(f);
  651.         writeln(f,'type');
  652.         writeln(f);
  653.         appobj:='T'+WizardPtr^.appbuffer.objname;
  654.         writeln(f,tab(1),'P',WizardPtr^.appbuffer.objname,' = ^',appobj,';');
  655.         writeln(f,tab(1),appobj,' = object(TApplication)');
  656.         if WizardPtr^.appbuffer.auto=bf_Checked then
  657.             writeln(f,tab(2),'function AutoFolder: boolean; virtual;');
  658.         if WizardPtr^.appbuffer.gdos=bf_Checked then
  659.             writeln(f,tab(2),'procedure SetupVDI; virtual;');
  660.         writeln(f,tab(2),'procedure InitInstance; virtual;');
  661.         writeln(f,tab(2),'procedure InitMainWindow; virtual;');
  662.         if WizardPtr^.appbuffer.iwnd=bf_Checked then
  663.             writeln(f,tab(2),'procedure IconPaint(Work: GRECT; var PaintInfo: TPaintStruct); virtual;');
  664.         if WizardPtr^.appbuffer.timr=bf_Checked then
  665.             writeln(f,tab(2),'function GetMsTimer: longint; virtual;');
  666.         if WizardPtr^.appbuffer.rbox=bf_Checked then
  667.             writeln(f,tab(2),'procedure MURubbox(r: GRECT); virtual;');
  668.         if WizardPtr^.appbuffer.xtxt=bf_Checked then
  669.             writeln(f,tab(2),'function XAccText(OrgID: integer; pText: pointer): boolean; virtual;');
  670.         if WizardPtr^.appbuffer.xkey=bf_Checked then
  671.             writeln(f,tab(2),'function XAccKey(OrgID,Stat,Key: integer): boolean; virtual;');
  672.         if WizardPtr^.appbuffer.xgem=bf_Checked then
  673.             writeln(f,tab(2),'function XAccMeta(OrgID: integer; pData: pointer; lData: longint; Final: boolean): boolean; virtual;');
  674.         if WizardPtr^.appbuffer.ximg=bf_Checked then
  675.             writeln(f,tab(2),'function XAccIMG(OrgID: integer; pData: pointer; lData: longint; Final: boolean): boolean; virtual;');
  676.         if WizardPtr^.appbuffer.drag=bf_Checked then
  677.             begin
  678.                 writeln(f,tab(2),'function DDHeaderReply(dType,dName,fName: string; dSize: longint; OrgID,WindID,mX,mY,KStat: integer): byte; virtual;');
  679.                 writeln(f,tab(2),'function DDReadData(dType,dName,fName: string; dSize: longint; PipeHnd,OrgID,WindID,mX,mY,KStat: integer): boolean; virtual;');
  680.                 writeln(f,tab(2),'function DDReadArgs(dSize: longint; PipeHnd,OrgID,WindID,mX,mY,KStat: integer): boolean; virtual;');
  681.                 writeln(f,tab(2),'procedure DDFinished(OrgID,WindID,mX,mY,KStat: integer); virtual;')
  682.             end;
  683.         if WizardPtr^.appbuffer.av=bf_Checked then
  684.             writeln(f,tab(2),'procedure HandleAV(Pipe: Pipearray); virtual;');
  685.         if WizardPtr^.appbuffer.timr=bf_Checked then
  686.             writeln(f,tab(2),'procedure HandleTimer; virtual;');
  687.         writeln(f,tab(1),'end;');
  688.         writeln(f);
  689.         writeln(f,'var');
  690.         writeln(f);
  691.         writeln(f,tab(1),WizardPtr^.appbuffer.objname,'   : ',appobj,';');
  692.         writeln(f,tab(1),WizardPtr^.appbuffer.objname,'Ptr: P',WizardPtr^.appbuffer.objname,';');
  693.         writeln(f);
  694.         writeln(f);
  695.         writeln(f);
  696.         if WizardPtr^.appbuffer.rsc=bf_Checked then
  697.             if WizardPtr^.appbuffer.incl=bf_Checked then
  698.                 begin
  699.                     writeln(f,'procedure ',WizardPtr^.appbuffer.filename,'Resource; external; {$L ',WizardPtr^.appbuffer.filename,'.o}');
  700.                     writeln(f);
  701.                     writeln(f)
  702.                 end;
  703.         if WizardPtr^.appbuffer.auto=bf_Checked then
  704.             begin
  705.                 writeln(f,'function ',appobj,'.AutoFolder: boolean;');
  706.                 writeln(f);
  707.                 writeln(f,tab(1),'begin');
  708.                 writeln(f,tab(2),'AutoFolder:=false');
  709.                 writeln(f,tab(1),'end;');
  710.                 writeln(f);
  711.                 writeln(f)
  712.             end;
  713.         if WizardPtr^.appbuffer.gdos=bf_Checked then
  714.             begin
  715.                 writeln(f,'procedure ',appobj,'.SetupVDI;');
  716.                 writeln(f);
  717.                 writeln(f,tab(1),'begin');
  718.                 writeln(f,tab(2),'Attr.Style:=Attr.Style or as_LoadFonts;');
  719.                 writeln(f,tab(2),'inherited SetupVDI');
  720.                 writeln(f,tab(1),'end;');
  721.                 writeln(f);
  722.                 writeln(f)
  723.             end;
  724.         writeln(f,'procedure ',appobj,'.InitInstance;');
  725.         writeln(f);
  726.         writeln(f,tab(1),'begin');
  727.         writeln(f,tab(2),WizardPtr^.appbuffer.objname,'Ptr:=P',WizardPtr^.appbuffer.objname,'(Application);');
  728.         if WizardPtr^.appbuffer.profile=bf_Checked then
  729.             writeln(f,tab(2),'OpenPrivateProfile(''',StrPUpper(WizardPtr^.appbuffer.filename),'.INF'');');
  730.         if WizardPtr^.appbuffer.rsc=bf_Checked then
  731.             begin
  732.                 if WizardPtr^.appbuffer.load=bf_Checked then writeln(f,tab(2),'LoadResource(''',StrPUpper(WizardPtr^.appbuffer.filename),'.RSC'','''');')
  733.                 else
  734.                     writeln(f,tab(2),'InitResource(@',WizardPtr^.appbuffer.filename,'Resource,'''');')
  735.             end;
  736.         if WizardPtr^.appbuffer.timr=bf_Checked then
  737.             writeln(f,tab(2),'Attr.EventMask:=Attr.EventMask or MU_TIMER;');
  738.         if (WizardPtr^.appbuffer.rbox=bf_Checked) or (WizardPtr^.appbuffer.xinp=bf_Checked) then
  739.             begin
  740.                 if WizardPtr^.appbuffer.rbox=bf_Checked then dummy:=' or as_Rubbox'
  741.                 else
  742.                     dummy:='';
  743.                 if WizardPtr^.appbuffer.xinp=bf_Checked then dummy:=dummy+' or as_XInputMode';
  744.                 writeln(f,tab(2),'Attr.Style:=Attr.Style',dummy,';')
  745.             end;
  746.         writeln(f,tab(2),'inherited InitInstance');
  747.         writeln(f,tab(1),'end;');
  748.         writeln(f);
  749.         writeln(f);
  750.         writeln(f,'procedure ',appobj,'.InitMainWindow;');
  751.         writeln(f);
  752.         writeln(f,tab(1),'begin');
  753.         writeln(f,tab(2),'new(PWindow,Init(nil,Name^));');
  754.         writeln(f,tab(2),'if (MainWindow=nil) or (ChkError<em_OK) then Status:=em_InvalidMainWindow');
  755.         writeln(f,tab(1),'end;');
  756.         writeln(f);
  757.         writeln(f);
  758.         if WizardPtr^.appbuffer.iwnd=bf_Checked then
  759.             begin
  760.                 writeln(f,'procedure ',appobj,'.IconPaint(Work: GRECT; var PaintInfo: TPaintStruct);');
  761.                 writeln(f);
  762.                 writeln(f,tab(1),'begin');
  763.                 writeln(f,tab(1),'end;');
  764.                 writeln(f);
  765.                 writeln(f)
  766.             end;
  767.         if WizardPtr^.appbuffer.timr=bf_Checked then
  768.             begin
  769.                 writeln(f,'function ',appobj,'.GetMsTimer: longint;');
  770.                 writeln(f);
  771.                 writeln(f,tab(1),'begin');
  772.                 writeln(f,tab(2),'GetMsTimer:=1000');
  773.                 writeln(f,tab(1),'end;');
  774.                 writeln(f);
  775.                 writeln(f)
  776.             end;
  777.         if WizardPtr^.appbuffer.rbox=bf_Checked then
  778.             begin
  779.                 writeln(f,'procedure ',appobj,'.MURubbox(r: GRECT);');
  780.                 writeln(f);
  781.                 writeln(f,tab(1),'begin');
  782.                 writeln(f,tab(1),'end;');
  783.                 writeln(f);
  784.                 writeln(f)
  785.             end;
  786.         if WizardPtr^.appbuffer.xtxt=bf_Checked then
  787.             begin
  788.                 writeln(f,'function ',appobj,'.XAccText(OrgID: integer; pText: pointer): boolean;');
  789.                 writeln(f);
  790.                 writeln(f,tab(1),'begin');
  791.                 writeln(f,tab(2),'XAccText:=false');
  792.                 writeln(f,tab(1),'end;');
  793.                 writeln(f);
  794.                 writeln(f)
  795.             end;
  796.         if WizardPtr^.appbuffer.xkey=bf_Checked then
  797.             begin
  798.                 writeln(f,'function ',appobj,'.XAccKey(OrgID,Stat,Key: integer): boolean;');
  799.                 writeln(f);
  800.                 writeln(f,tab(1),'begin');
  801.                 writeln(f,tab(2),'XAccKey:=false');
  802.                 writeln(f,tab(1),'end;');
  803.                 writeln(f);
  804.                 writeln(f)
  805.             end;
  806.         if WizardPtr^.appbuffer.xgem=bf_Checked then
  807.             begin
  808.                 writeln(f,'function ',appobj,'.XAccMeta(OrgID: integer; pData: pointer; lData: longint; Final: boolean): boolean;');
  809.                 writeln(f);
  810.                 writeln(f,tab(1),'begin');
  811.                 writeln(f,tab(2),'XAccMeta:=false');
  812.                 writeln(f,tab(1),'end;');
  813.                 writeln(f);
  814.                 writeln(f)
  815.             end;
  816.         if WizardPtr^.appbuffer.ximg=bf_Checked then
  817.             begin
  818.                 writeln(f,'function ',appobj,'.XAccIMG(OrgID: integer; pData: pointer; lData: longint; Final: boolean): boolean;');
  819.                 writeln(f);
  820.                 writeln(f,tab(1),'begin');
  821.                 writeln(f,tab(2),'XAccIMG:=false');
  822.                 writeln(f,tab(1),'end;');
  823.                 writeln(f);
  824.                 writeln(f)
  825.             end;
  826.         if WizardPtr^.appbuffer.drag=bf_Checked then
  827.             begin
  828.                 writeln(f,'function ',appobj,'.DDHeaderReply(dType,dName,fName: string; dSize: longint; OrgID,WindID,mX,mY,KStat: integer): byte;');
  829.                 writeln(f);
  830.                 writeln(f,tab(1),'begin');
  831.                 writeln(f,tab(2),'DDHeaderReply:=DD_NAK');
  832.                 writeln(f,tab(1),'end;');
  833.                 writeln(f);
  834.                 writeln(f);
  835.                 writeln(f,'function ',appobj,'.DDReadData(dType,dName,fName: string; dSize: longint; PipeHnd,OrgID,WindID,mX,mY,KStat: integer): boolean;');
  836.                 writeln(f);
  837.                 writeln(f,tab(1),'begin');
  838.                 writeln(f,tab(2),'DDReadData:=false');
  839.                 writeln(f,tab(1),'end;');
  840.                 writeln(f);
  841.                 writeln(f);
  842.                 writeln(f,'function ',appobj,'.DDReadArgs(dSize: longint; PipeHnd,OrgID,WindID,mX,mY,KStat: integer): boolean;');
  843.                 writeln(f);
  844.                 writeln(f,tab(1),'begin');
  845.                 writeln(f,tab(2),'DDReadArgs:=false;');
  846.                 writeln(f,tab(2),'{ ... }');
  847.                 writeln(f,tab(2),'inherited DDReadArgs(dSize,PipeHnd,OrgID,WindID,mX,mY,KStat)');
  848.                 writeln(f,tab(1),'end;');
  849.                 writeln(f);
  850.                 writeln(f);
  851.                 writeln(f,'procedure ',appobj,'.DDFinished(OrgID,WindID,mX,mY,KStat: integer);');
  852.                 writeln(f);
  853.                 writeln(f,tab(1),'begin');
  854.                 writeln(f,tab(1),'end;');
  855.                 writeln(f);
  856.                 writeln(f)
  857.             end;
  858.         if WizardPtr^.appbuffer.av=bf_Checked then
  859.             begin
  860.                 writeln(f,'procedure ',appobj,'.HandleAV(Pipe: Pipearray);');
  861.                 writeln(f);
  862.                 writeln(f,tab(1),'begin');
  863.                 writeln(f,tab(1),'end;');
  864.                 writeln(f);
  865.                 writeln(f)
  866.             end;
  867.         if WizardPtr^.appbuffer.timr=bf_Checked then
  868.             begin
  869.                 writeln(f,'procedure ',appobj,'.HandleTimer;');
  870.                 writeln(f);
  871.                 writeln(f,tab(1),'begin');
  872.                 writeln(f,tab(1),'end;');
  873.                 writeln(f);
  874.                 writeln(f)
  875.             end;
  876.         { ... }
  877.         writeln(f,'begin');
  878.         dummy:=WizardPtr^.appbuffer.cookie;
  879.         writeln(f,tab(1),WizardPtr^.appbuffer.objname,'.Init(''',dummy,StrPSpace(4-length(dummy)),''',''',WizardPtr^.appbuffer.entry,''');');
  880.         writeln(f,tab(1),WizardPtr^.appbuffer.objname,'.Run;');
  881.         writeln(f,tab(1),WizardPtr^.appbuffer.objname,'.Done');
  882.         write(f,'end.');
  883.         close(f);
  884.         ArrowMouse;
  885.         new(ptw,Init(nil,fname,100,50));
  886.         ptw^.RealTabs:=(WizardPtr^.optbuffer.realtab=bf_Checked);
  887.         ptw^.TabSize:=atol(WizardPtr^.optbuffer.tabsize);
  888.         ptw^.Read(fname)
  889.     end;
  890.  
  891.  
  892. procedure TAppConf.Work;
  893.  
  894.     begin
  895.         if WizardPtr^.AppIcon<>nil then
  896.             with WizardPtr^.AppIcon^ do
  897.                 begin
  898.                     Click:=2;
  899.                     Work
  900.                 end;
  901.     end;
  902.  
  903.  
  904. procedure TOptions.Work;
  905.     var pc: PTabCheckBox;
  906.         pe: PEdit;
  907.  
  908.     begin
  909.         if ADialog=nil then
  910.             begin
  911.                 ADialog:=new(POptDialog,Init(nil,'Einstellungen',WIZOPT));
  912.                 if ADialog<>nil then
  913.                     begin
  914.                         new(pe,Init(ADialog,WOPTPP,64,'Gibt den kompletten Pfad (mit Dateinamen) für PPASCAL.PRG an'));
  915.                         pe^.Disable; { ... }
  916.                         new(pe,Init(ADialog,WOPTBIN,64,'Gibt den Pfad incl. Datei für BINOBJ.TTP an, mit dem RSC-Dateien in Objekte umgewandelt werden können'));
  917.                         pe^.Disable; { ... }
  918.                         new(pe,Init(ADialog,WOPTRCS,64,'Enthält den Zugriffspfad für das Resource Construction Set'));
  919.                         pe^.Disable; { ... }
  920.                         new(pc,Init(ADialog,WOPTRTAB,true,'Ist dieses Feld angekreuzt, werden beim Speichern echte Tabulatoren verwendet, ansonsten die entsprechende Anzahl von Spaces'));
  921.                         new(pc^.pte,Init(ADialog,WOPTTSIZ,2,'Gibt an, wieviele Spaces pro Tabulator gespeichert werden, wenn keine echten Tabulatoren verwendet werden'));
  922.                         new(PCheckBox,Init(ADialog,WOPTXINP,true,'Mit diesem Feld kann die Eingabe auf das Fenster unter dem Mauscursor umgelenkt werden (wie unter X/Unix)'));
  923.                         { sofort ändern... }
  924.                         new(PButton,Init(ADialog,WOPTOK,id_OK,true,'Übernimmt die Änderungen'));
  925.                         new(PButton,Init(ADialog,WOPTABBR,id_Cancel,true,'Schließt den Dialog, ohne die Änderungen zu übernehmen'));
  926.                         ADialog^.TransferBuffer:=@WizardPtr^.optbuffer;
  927.                         if WizardPtr^.optbuffer.realtab=bf_Checked then pc^.pte^.Disable
  928.                         else
  929.                             pc^.pte^.Enable
  930.                     end
  931.             end;
  932.         if ADialog<>nil then ADialog^.MakeWindow
  933.     end;
  934.  
  935.  
  936. procedure TSaveOpt.Work;
  937.  
  938.     begin
  939.         SliceMouse;
  940.         if WritePrivateProfileString('Options','PPascal',WizardPtr^.optbuffer.pascal,'WIZARD.INF') then
  941.             begin
  942.                 SliceMouseNext;
  943.                 WritePrivateProfileString('Options','Binobj',WizardPtr^.optbuffer.binobj,'WIZARD.INF');
  944.                 SliceMouseNext;
  945.                 WritePrivateProfileString('Options','RCS',WizardPtr^.optbuffer.rcs,'WIZARD.INF');
  946.                 SliceMouseNext;
  947.                 WritePrivateProfileInt('Options','RealTab',WizardPtr^.optbuffer.realtab,'WIZARD.INF');
  948.                 SliceMouseNext;
  949.                 WritePrivateProfileString('Options','TabSize',WizardPtr^.optbuffer.tabsize,'WIZARD.INF');
  950.                 SliceMouseNext;
  951.                 WritePrivateProfileInt('Options','XInputMode',WizardPtr^.optbuffer.xinput,'WIZARD.INF')
  952.             end;
  953.         ArrowMouse
  954.     end;
  955.  
  956.  
  957. procedure TTabCheckBox.Changed(AnIndx: integer; DblClick: boolean);
  958.  
  959.     begin
  960.         if GetCheck=bf_Checked then pte^.Disable
  961.         else
  962.             pte^.Enable
  963.     end;
  964.  
  965.  
  966. procedure TRscCheckBox.Changed(AnIndx: integer; DblClick: boolean);
  967.  
  968.     begin
  969.         if GetCheck=bf_Checked then
  970.             begin
  971.                 pr1^.Enable;
  972.                 pr2^.Enable
  973.             end
  974.         else
  975.             begin
  976.                 pr1^.Disable;
  977.                 pr2^.Disable
  978.             end
  979.     end;
  980.  
  981.  
  982. constructor TColButton.Init(AParent: PDialog; AnIndx,AnID: integer; UserDef: boolean; Hlp: string; colr: integer; objct: PControl);
  983.  
  984.     begin
  985.         if not(inherited Init(AParent,AnIndx,AnID,UserDef,Hlp)) then fail;
  986.         if objct=nil then fail;
  987.         color:=colr;
  988.         obj:=objct
  989.     end;
  990.  
  991.  
  992. procedure TColButton.Changed(AnIndx: integer; DblClick: boolean);
  993.  
  994.     begin
  995.         obj^.ObjAddr^.ob_spec.ted_info^.te_color:=(obj^.ObjAddr^.ob_spec.ted_info^.te_color and $fff0) or color;
  996.         obj^.Paint
  997.     end;
  998.  
  999.  
  1000. begin
  1001.     Wizard.Init('GWIZ','GEM-Wizard');
  1002.     Wizard.Run;
  1003.     Wizard.Done
  1004. end.